#pragma once

#include <map>
#include "HashedString.h"

class Shader
{
public:
	enum Type
	{
		FragmentShader = 0x8B30,
		VertexShader = 0x8B31,
	};

	enum UniformType
	{
		VEC1 = 1,
		VEC2,
		VEC3,
		VEC4,
		MATRIX2,
		MATRIX3,
		MATRIX4,
	};
	
	typedef std::pair<unsigned int, UniformType> LocationTypePair_t;
	typedef std::pair<HashedString, LocationTypePair_t> UniformPair_t;
	typedef std::map<HashedString, LocationTypePair_t> UniformMap_t;
	typedef std::map<HashedString, Shader> Map_t;

	unsigned int m_shaderID;
	UniformMap_t m_uniforms;
	UniformMap_t m_attributes;
};